A software development process is a structure imposed on the development of a software product. Synonyms include software lifecycle and software process. There are several models for the software development process, each describing approaches to a variety of tasks or activities that take place during the process. One model is known as the “waterfall” model. It describes a sequence of tasks (or phases) that may include: stating of requirements, analyzing requirements, designing a solution, architecting a software framework for the solution, developing code, testing, deploying the code, and finally performing a post implementation task such as supporting the code.
The different phases substantially differ from each other. Each phase includes tasks that are performed by different roles. Typically software development tools support specific roles and their relevant tasks and activities in the lifecycle. Table 1 illustrates some state of the art software development tools of IBM and others, and the phases or disciplines that they support.
Phase orDisciplineSoftware development toolsProjectIBM Rational Portfolio Manager,ManagementMicrosoft ProjectRequirementsIBM Rational Requisite ProModeling &IBM Rational Application Developer,DevelopmentIBM Rational Software Architect,Microsoft Visual StudioBusinessWebSphere Business ModelerModelingTestingIBM Rational RobotBuildIBM Rational BuildForgeSource CodeIBM Rational ClearCaseManagementDefect ManagementIBM Rational ClearQuestAsset ManagementWebSphere Studio Asset Analyzer,Rational Asset ManagerCustomerNetResults Tracker (customerRelationshipsupport and helpdesk module)Management (CRM)CollaborationLotus Sametime
Some of the mentioned above tools are passive in nature. They check a compliance of a monitored software development phase to a predefined phase scenario—they may indicate that a file must be checked-out before it is edited, that a defect must be opened before a file can be checked-out.
These software development task monitors do not actively look for exceptions to the software development phases. They are also limited in their monitoring capabilities to monitoring an occurrence of simple event instances.
For example, a project leader cannot be alerted by a software development task monitor when: (i) a defect is reassigned more than X times, (ii) a design document was not checked-in X days after a requirement was approved, (iii) check-out attempts on a file were denied more than X times by Y people (which can imply that the file was locked by someone else at the time).
In addition, software development task monitors do not collaborate and do not support a detection of a complex situation that can be responsive to event instances detected by different software development task monitors.
There is a need to provide efficient methods, systems and computer program products for efficiently managing a software development process.